class GroupRect extends egret.Sprite
{
    public constructor()
    {
        super();
        this.createRects();
    }

    private _rects:Array<Rect>;//数组
    private createRects()
    {
        this._rects = [];//实例化数组
        for( var i=0;i<4;i++)
        {
            var rect:Rect = new Rect();
            this._rects.push( rect );//加入数组
            rect.x = rect.width*i;//计算x轴宽度
            this.addChild(rect);//添加进舞台

            //添加事件侦听
            //egret.TouchEvent.TOUCH_TAP 点击事件
            //响应函数 this.onClickRect
            rect.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onClickRect,this);
        }
    }

    private _currentRow:number = 0;//当前的行数
    private onClickRect(evt:egret.TouchEvent)//点击侦听事件，点击事件参数
    {
        evt.target.onRectClick();//调用点击后改变颜色封装
        //判断是否可点击的方块
        //判断是否倒数第2行，从0开始
        // Data.getRectRow() 总行数
        if(evt.target.type == RectType.NOCLICKABLE || this._currentRow != (Data.getRectRow()-2) )
        {
            this.dispatchEventWith("gameover");//抛出回调事件，回调事件名称
        }
        else
        {
            this.dispatchEventWith("cilckRight");//抛出回调事件，回调事件名称
        }
    }

    private _currentBlackRectindex:number = 0;//当前可以被点击的方块的下标(黑色)
    public createBlackRect()
    {
        this.init();//初始化
        var n:number = Math.random();//随机数
        //根据随机数区间分配4个位置下标
        if( n>=0 && n<=0.25 )
        {
            this._currentBlackRectindex = 0;
        }
        else if( n>=0.25 && n<0.5 )
        {
            this._currentBlackRectindex = 1;
        }
        else if( n>=0.5 && n<0.75 )
        {
            this._currentBlackRectindex = 2;
        }
        else if( n>=0.75 && n<=1 )
        {
            this._currentBlackRectindex = 3;
        }
        this._rects[this._currentBlackRectindex].type = RectType.CLICKABLE;//设置当前可以被点击的方块的点击类型
    }

    //初始化 点击 属性
    public init()
    {
        for( var i=0;i<4;i++)
        {
            //4个方块类型 修改 清除点击状态 
            this._rects[i].type = RectType.NOCLICKABLE;
        }
    }

    //移动
    public move()
    {
        this._currentRow++;//当前行数自增
        //当前行数是否等于最后一行
        if( this._currentRow == Data.getRectRow() )
        {
            this._currentRow = 0;//行数调整为0
            this.createBlackRect();//返回第一行再次抽取随机黑色方块
        }
        //调整y轴
        //当前行数 乘 方块高度值(宽高值相同getRectWidth)
        this.y = this._currentRow* Data.getRectWidth();
    }
}